package HashTable;

import java.util.*;
/**
 *
 *请设计一个高效算法，找出数组中两数之和为指定值的所有整数对。
 * 给定一个int数组A和数组大小n以及需查找的和sum，请返回和为sum的整数对的个数。
 * 保证数组大小小于等于3000。
 *
 * */
class FindPair {
    public static int countPairs(int[] A, int n, int sum) {
        HashMap<Integer,Integer> map=new HashMap<>();
        int count=0;
        for(int temp:A){
            count+=map.getOrDefault(sum-temp,0);//获得k值
            map.put(temp,map.getOrDefault(temp,0)+1);//保存个数
        }
        return count;
    }

    public static void main(String[] args) {
        int[] nums = {2, 2, 2, 3, 3};
        System.out.println(countPairs(nums,5,5));
    }
}
